/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Consumption Management APIs
消费管理API接口

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef BillingApiModel_h
#define BillingApiModel_h
#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKBilling/BillingModel.h>


@interface BillingCalculateTotalPriceRequest:JDCloudRequest

/// 操作类型 1:创建 2:续费 3:升配 4:删除
@property (strong,nonatomic,nonnull)  NSNumber*  cmd;
/// 计算价格的订单
@property (strong,nonatomic,nonnull)  NSArray<OrderPriceProtocol*>*  orderList;
/// 操作时间，遵循ISO8601标准，使用UTC时间，格式为：YYYY-MM-DDTHH:mm:ssZ
@property (strong,nonatomic,nonnull)  NSString*  operateTime;
/// 1:折扣（不需要传） 2:免费活动3:付费活动 4:推荐码 5:会员价 [{&quot;promotionType&quot;:1,&quot;activityCode&quot;:123},{&quot;promotionType&quot;:2,&quot;activityCode&quot;:}]
@property (strong,nonatomic,nonnull)  NSString*  promotionInfo;
/// 客户端：1.PC端；2.移动端；
@property (strong,nonatomic,nonnull)  NSNumber*  clientType;
/// 批量购买时数量
@property (strong,nonatomic,nonnull)  NSNumber*  packageCount;
/// 临时升配时必传，3-临时升配
@property (strong,nonatomic,nonnull)  NSNumber*  processType;
-(id) initWithRegion:(NSString *)regionId
cmd:(NSNumber*)cmd
orderList:(NSArray<OrderPriceProtocol*>*)orderList
operateTime:(NSString*)operateTime
promotionInfo:(NSString*)promotionInfo
clientType:(NSNumber*)clientType
packageCount:(NSNumber*)packageCount
processType:(NSNumber*)processType;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
cmd:(NSNumber*)cmd
orderList:(NSArray<OrderPriceProtocol*>*)orderList
operateTime:(NSString*)operateTime
promotionInfo:(NSString*)promotionInfo
clientType:(NSNumber*)clientType
packageCount:(NSNumber*)packageCount
processType:(NSNumber*)processType;

@end

@interface BillingCalculateTotalPriceResult : NSObject
/// 订单折扣前总价
 @property (strong,nonatomic,nonnull)  NSNumber*  totalPrice;
/// 订单折扣前总价4位
 @property (strong,nonatomic,nonnull)  NSNumber*  totalPriceScale4;
/// 折扣后订单价格
 @property (strong,nonatomic,nonnull)  NSNumber*  discountedTotalPrice;
/// 总折扣金额
 @property (strong,nonatomic,nonnull)  NSNumber*  totalDiscount;
/// List
 @property (strong,nonatomic,nonnull)  NSArray<OrderPriceDetail*>*  list;
/// 订单原价 包年时 一年原价为12个月价格，totalPrice为10个月价格
 @property (strong,nonatomic,nonnull)  NSNumber*  totalOriginalPrice;
/// 参与优惠的明细
 @property (strong,nonatomic,nonnull)  NSString*  favorableInfos;
/// 备注
 @property (strong,nonatomic,nonnull)  NSString*  remark;
/// 各订单单价总和
 @property (strong,nonatomic,nonnull)  NSNumber*  totalUnitPrice;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithTotalPrice:(NSNumber*) totalPrice

    totalPriceScale4:(NSNumber*)totalPriceScale4

    discountedTotalPrice:(NSNumber*)discountedTotalPrice

    totalDiscount:(NSNumber*)totalDiscount

    list:(NSArray<OrderPriceDetail*>*)list

    totalOriginalPrice:(NSNumber*)totalOriginalPrice

    favorableInfos:(NSString*)favorableInfos

    remark:(NSString*)remark

    totalUnitPrice:(NSNumber*)totalUnitPrice;
@end

@interface BillingCalculateTotalPriceResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property BillingCalculateTotalPriceResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(BillingCalculateTotalPriceResult*) result;
@end

@interface BillingQueryBillSummaryResult : NSObject
/// Pagination
 @property (strong,nonatomic,nonnull)  Pagination*  pagination;
/// Result
 @property (strong,nonatomic,nonnull)  NSArray<BillSummary*>*  result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithPagination:(Pagination*) pagination

    result:(NSArray<BillSummary*>*)result;
@end

@interface BillingQueryBillDetailResult : NSObject
/// Pagination
 @property (strong,nonatomic,nonnull)  Pagination*  pagination;
/// Result
 @property (strong,nonatomic,nonnull)  NSArray<BillSummary*>*  result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;
-(id) initWithPagination:(Pagination*) pagination

    result:(NSArray<BillSummary*>*)result;
@end

@interface BillingQueryBillSummaryRequest:JDCloudRequest

/// 计费开始时间
@property (strong,nonatomic,nonnull)  NSString*  startTime;
/// 计费结束时间
@property (strong,nonatomic,nonnull)  NSString*  endTime;
/// 产品线代码
@property (strong,nonatomic,nonnull)  NSString*  appCode;
/// 产品代码
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 资源单id列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  resourceIds;
/// 标签
@property (strong,nonatomic,nonnull)  NSArray<Tags*>*  tags;
/// pageIndex
@property (strong,nonatomic,nonnull)  NSNumber*  pageIndex;
/// pageSize
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
-(id) initWithRegion:(NSString *)regionId
startTime:(NSString*)startTime
endTime:(NSString*)endTime
appCode:(NSString*)appCode
serviceCode:(NSString*)serviceCode
resourceIds:(NSArray<NSString*>*)resourceIds
tags:(NSArray<Tags*>*)tags
pageIndex:(NSNumber*)pageIndex
pageSize:(NSNumber*)pageSize;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
startTime:(NSString*)startTime
endTime:(NSString*)endTime
appCode:(NSString*)appCode
serviceCode:(NSString*)serviceCode
resourceIds:(NSArray<NSString*>*)resourceIds
tags:(NSArray<Tags*>*)tags
pageIndex:(NSNumber*)pageIndex
pageSize:(NSNumber*)pageSize;

@end

@interface BillingQueryBillSummaryResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property BillingQueryBillSummaryResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(BillingQueryBillSummaryResult*) result;
@end

@interface BillingQueryBillDetailResponse : NSObject

@property NSString* requestId;

@property ServiceError* error;

@property BillingQueryBillDetailResult* result;

-(NSMutableDictionary*) dictionary;

-(id) initWithDic:(NSDictionary*)dictionary;

-(id) initWithRequestId:(NSString*) requestId
        error:(ServiceError*) error
        result:(BillingQueryBillDetailResult*) result;
@end

@interface BillingQueryBillDetailRequest:JDCloudRequest

/// 计费开始时间
@property (strong,nonatomic,nonnull)  NSString*  startTime;
/// 计费结束时间
@property (strong,nonatomic,nonnull)  NSString*  endTime;
/// 产品线代码
@property (strong,nonatomic,nonnull)  NSString*  appCode;
/// 产品代码
@property (strong,nonatomic,nonnull)  NSString*  serviceCode;
/// 计费类型 1、按配置 2、按用量 3、包年包月 4、按次
@property (strong,nonatomic,nonnull)  NSNumber*  billingType;
/// 资源单id列表
@property (strong,nonatomic,nonnull)  NSArray<NSString*>*  resourceIds;
/// 标签
@property (strong,nonatomic,nonnull)  NSArray<Tags*>*  tags;
/// pageIndex
@property (strong,nonatomic,nonnull)  NSNumber*  pageIndex;
/// pageSize
@property (strong,nonatomic,nonnull)  NSNumber*  pageSize;
-(id) initWithRegion:(NSString *)regionId
startTime:(NSString*)startTime
endTime:(NSString*)endTime
appCode:(NSString*)appCode
serviceCode:(NSString*)serviceCode
billingType:(NSNumber*)billingType
resourceIds:(NSArray<NSString*>*)resourceIds
tags:(NSArray<Tags*>*)tags
pageIndex:(NSNumber*)pageIndex
pageSize:(NSNumber*)pageSize;

-(id) initWithRegion:(NSString *)regionId
             version:(NSString *)version
startTime:(NSString*)startTime
endTime:(NSString*)endTime
appCode:(NSString*)appCode
serviceCode:(NSString*)serviceCode
billingType:(NSNumber*)billingType
resourceIds:(NSArray<NSString*>*)resourceIds
tags:(NSArray<Tags*>*)tags
pageIndex:(NSNumber*)pageIndex
pageSize:(NSNumber*)pageSize;

@end

#endif /* BillingApiModel_h */
